package com.leezai.mqtt.utils;

import cn.hutool.db.Db;
import cn.hutool.db.Entity;
import com.leezai.mqtt.dynamicSource.DynamicDataSourceManager;

import javax.sql.DataSource;
import java.sql.SQLException;

public class DynamicDbUtil {

    /**
     * 使用指定数据源执行查询
     */
    public static Entity queryOne(String dsName, String sql, Object... params) throws SQLException {
        DataSource ds = DynamicDataSourceManager.getDataSource(dsName);
        if (ds == null) {
            throw new RuntimeException("数据源 [" + dsName + "] 不存在");
        }
        return Db.use(ds).queryOne(sql, params);
    }

    /**
     * 使用指定数据源执行更新
     */
    public static int update(String dsName, String sql, Object... params) throws SQLException {
        DataSource ds = DynamicDataSourceManager.getDataSource(dsName);
        if (ds == null) {
            throw new RuntimeException("数据源 [" + dsName + "] 不存在");
        }
        return Db.use(ds).execute(sql, params);
    }

    /**
     * 使用指定数据源插入数据
     */
    public static int insert(String dsName, Entity entity) throws SQLException {
        DataSource ds = DynamicDataSourceManager.getDataSource(dsName);
        if (ds == null) {
            throw new RuntimeException("数据源 [" + dsName + "] 不存在");
        }
        return Db.use(ds).insert(entity);
    }
}
